package com.hengpeng.itfinbase.persist;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Enumerated;

import com.hengpeng.common.web.annotation.HtmlInput;
import com.hengpeng.common.web.annotation.HtmlInputPattern;
import com.hengpeng.common.web.annotation.HtmlInputType;
import com.hengpeng.itfinbase.idAssign.AbstractAssign18IdEntity;

/**
 * <pre>
 * 项目资金信息
 * </pre>
 * 
 * @author weiyuan
 * @version 1.0, 2015年8月24日
 */
@Entity
public class ProjectInfo extends AbstractAssign18IdEntity {
	/**
	 * 
	 */
	private static final long serialVersionUID = -1557387274145913840L;

	/**
	 * <pre>
	 * 项目类型
	 * </pre>
	 * 
	 * @author weiyuan
	 * @version 1.0, 2015年8月24日
	 */
	public static enum ProjectType {
		PROJECTFINACE("项目融资"),

		PROPERTYTRADE("资产交易");

		private String text;

		ProjectType(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}
	}

	/**
	 * 融资方式
	 * 
	 * @author weiyuan
	 */
	public static enum FinanceType {
		stockstype("股权融资"), credittype("债权融资");

		private String text;

		FinanceType(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}
	}

	/**
	 * 投资退出方式
	 * 
	 * @author weiyuan
	 *
	 */
	public static enum ExitType {
		backtype("股份回购");

		private String text;

		ExitType(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}
	}

	public enum BussinessType {
		type1("计算机/互联网/通信/电子"), type2("会计/金融/银行/保险"), type3("贸易/消费/制造/保险"), type4(
				"制药/医疗"), type5("广告/媒体"), type6("房地产/建筑"), type7("专业服务/教育/培训"), type8(
				"服务业"), type9("物流/运输"), type10("能源/原材料"), type11("政府/非盈利性机构/其他");

		private String text;

		BussinessType(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}
	}

	/**
	 * 所在地区
	 * 
	 * @author weiyuan
	 */
	public enum Location {
		BEIJING("北京市"), TIANJIN("天津市"), CHONGQING("重庆市"), SHANGHAI("上海市"), HEBEI(
				"河北省"), SHANXI("山西省"), JILIN("吉林省"), LIAONIN("辽宁省"), HEILONGJIANG(
				"黑龙江省"), SHANGXI("陕西省"), GANSHU("甘肃省"), QINGHAI("青海省"), SHANDONG(
				"山东省"), FUJIAN("福建省"), ZHEJIANG("浙江省"), TAIWAN("台湾省"), HENAN(
				"河南省"), HUBEI("湖北省"), HUNAN("湖南省"), JIANGXI("江西省"), JIANGSHU(
				"江苏省"), ANHUI("安徽省"), GUANGDONG("广东省"), HAINAN("海南省"), SICHUAN(
				"四川省"), GUIZHOU("贵州省"), YUNNAN("云南省"), NEIMENGGU("内蒙古自治区"), XINJIANG(
				"新疆维吾尔自治区"), NINXIA("宁夏回族自治区"), GUANGXI("广西壮族自治区"), XIZANG(
				"西藏自治区"), XIANGGANG("香港特别行政区"), AOMEN("澳门特别行政区");

		private String text;

		Location(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}

	}

	/**
	 * 资金类型
	 * 
	 * @author weiyuan
	 */
	public static enum FundType {
		PERSONFUND("个人资金"), COMPANYFUND("企业资金"), ANGELFUND("天使投资"), VCFUND(
				"VC投资"), PEFUND("PE投资"), DXFUND("小额贷款"), DDFUND("典当公司"), GURANFUND(
				"担保公司"), RENTFUND("金融租赁"), INVESTFUND("投资公司"), BANKFUND("商业银行"), JJFUND(
				"基金公司"), ZQFUND("证券公司"), XTFUND("信托公司"), ZCGLFUND("资产管理"), OTHERFUND(
				"其他资金");

		private String text;

		FundType(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}
	}

	/**
	 * 投资方式
	 * 
	 * @author weiyuan
	 *
	 */
	public static enum InvestType {
		TYPE1("股权投资"), TYPE2("债权投资"), TYPE3("金融投资"), TYPE4("BT/BOT项目投资"), OTHER(
				"其他投资");

		private String text;

		InvestType(String text) {
			this.text = text;
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			this.text = text;
		}
	}

	private Long publishUserId;// 发布人id

	@Column(length = 255)
	@HtmlInput(label = "项目名称", type = HtmlInputType.TEXT, index = 1, nullable = false)
	private String projectname;

	@Column(length = 25)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "项目类型", type = HtmlInputType.SELECT, labelProperty = "text", index = 2, nullable = false)
	private ProjectType projectType;

	@Column(length = 25)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "所在地区", type = HtmlInputType.SELECT, labelProperty = "text", index = 3, nullable = false)
	private Location location;

	@Column(length = 255)
	@HtmlInput(label = "联系人", type = HtmlInputType.TEXT, index = 4, nullable = false)
	private String linkMan;

	@Column(length = 25)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "所属行业/投资行业", type = HtmlInputType.SELECT, labelProperty = "text", index = 5, nullable = false)
	private BussinessType bussinessType;

	@Column(length = 500)
	@HtmlInput(label = "融资用途", type = HtmlInputType.TEXTAREA, index = 6, nullable = false)
	private String userfor;
	/**
	 * 单位元
	 */
	@HtmlInput(label = "融资金额", type = HtmlInputType.TEXT, index = 7, pattern = HtmlInputPattern.INT, nullable = false)
	private Long financeMoney;

	@HtmlInput(label = "意向资金", type = HtmlInputType.TEXT, index = 8, pattern = HtmlInputPattern.INT, nullable = false)
	private Long intentMoney;

	@Column(length = 25)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "融资方式", type = HtmlInputType.SELECT, labelProperty = "text", index = 8, nullable = false)
	private FinanceType financeType;

	@HtmlInput(label = "可提供材料", type = HtmlInputType.TEXT, index = 9, nullable = false)
	private String providestuff;

	@HtmlInput(label = "项目所处阶段", type = HtmlInputType.TEXT, index = 10, nullable = false)
	private String projectstage;

	@HtmlInput(label = "资金方占股比例", type = HtmlInputType.TEXT, index = 11, nullable = false)
	private String moneysiderage;

	@Column(length = 25)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "投资退出方式", type = HtmlInputType.SELECT, labelProperty = "text", index = 12, nullable = false)
	private ExitType exitType;

	@HtmlInput(label = "最短退出年限", type = HtmlInputType.TEXT, index = 13, nullable = false)
	private String shortquicktime;

	@Column(length = 500)
	@HtmlInput(label = "项目概述", type = HtmlInputType.TEXTAREA, index = 14, nullable = false)
	private String projectDesc;

	@Column(length = 500)
	@HtmlInput(label = "项目优势", type = HtmlInputType.TEXTAREA, index = 15, nullable = false)
	private String projectGoodness;

	@Column(length = 500)
	@HtmlInput(label = "备注", type = HtmlInputType.TEXTAREA, index = 16, nullable = false)
	private String bz;

	@HtmlInput(label = "最后修改日期", type = HtmlInputType.TEXT, pattern = HtmlInputPattern.DATETIME, format = "yyyy-MM-dd HH:mm", nullable = true, index = 24)
	private Date updateTime;

	@HtmlInput(label = "创建日期", type = HtmlInputType.TEXT, pattern = HtmlInputPattern.DATETIME, format = "yyyy-MM-dd HH:mm", nullable = true, index = 24)
	private Date createTime;

	/**
	 * 以下为资产信息字段
	 */
	@Column(length = 25)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "资金类型", type = HtmlInputType.SELECT, labelProperty = "text", index = 21, nullable = false)
	private FundType fundType;

	@Column(length = 25)
	@Enumerated(javax.persistence.EnumType.STRING)
	@HtmlInput(label = "投资方式", type = HtmlInputType.SELECT, labelProperty = "text", index = 22, nullable = false)
	private InvestType investType;

	@Column(length = 255)
	@HtmlInput(label = "资产交易名称", type = HtmlInputType.TEXT, index = 23, nullable = false)
	private String fundname;

	@Column(length = 255)
	@HtmlInput(label = "联系方式", type = HtmlInputType.TEXT, index = 24, nullable = false)
	private String linkMobile;

	/**
	 * 单位元
	 */
	@HtmlInput(label = "最小投资金额", type = HtmlInputType.TEXT, index = 25, pattern = HtmlInputPattern.INT, nullable = false)
	private Long minInvestMoney;

	@HtmlInput(label = "最大投资金额", type = HtmlInputType.TEXT, index = 26, pattern = HtmlInputPattern.INT, nullable = false)
	private Long maxInvestMoney;

	@HtmlInput(label = "前期费用", type = HtmlInputType.TEXT, index = 27, nullable = false)
	private String beforemoneyuse;

	@HtmlInput(label = "最低回报要求", type = HtmlInputType.TEXT, index = 28, nullable = false)
	private String minreturn;

	@HtmlInput(label = "投资期限", type = HtmlInputType.TEXT, index = 29, nullable = false)
	private String investtimelimit;

	@HtmlInput(label = "风控要求", type = HtmlInputType.TEXT, index = 30, nullable = false)
	private String riskyq;

	@Column(length = 500)
	@HtmlInput(label = "抵押物类型", type = HtmlInputType.TEXTAREA, index = 31, nullable = false)
	private String dystufftype;

	@Column(length = 500)
	@HtmlInput(label = "抵押物折扣率", type = HtmlInputType.TEXTAREA, index = 32, nullable = false)
	private String dywzkl;

	@Column(length = 500)
	@HtmlInput(label = "投资要求概述", type = HtmlInputType.TEXTAREA, index = 33, nullable = false)
	private String investDesc;

	@Column(length = 500)
	@HtmlInput(label = "投资案例", type = HtmlInputType.TEXTAREA, index = 34, nullable = false)
	private String investExample;

	public String getProjectname() {
		return projectname;
	}

	public String getBz() {
		return bz;
	}

	public void setBz(String bz) {
		this.bz = bz;
	}

	public void setProjectname(String projectname) {
		this.projectname = projectname;
	}

	public String getLinkMan() {
		return linkMan;
	}

	public void setLinkMan(String linkMan) {
		this.linkMan = linkMan;
	}

	public FundType getFundType() {
		return fundType;
	}

	public void setFundType(FundType fundType) {
		this.fundType = fundType;
	}

	public InvestType getInvestType() {
		return investType;
	}

	public void setInvestType(InvestType investType) {
		this.investType = investType;
	}

	public String getFundname() {
		return fundname;
	}

	public void setFundname(String fundname) {
		this.fundname = fundname;
	}

	public String getLinkMobile() {
		return linkMobile;
	}

	public void setLinkMobile(String linkMobile) {
		this.linkMobile = linkMobile;
	}

	public Long getMinInvestMoney() {
		return minInvestMoney;
	}

	public void setMinInvestMoney(Long minInvestMoney) {
		this.minInvestMoney = minInvestMoney;
	}

	public Long getMaxInvestMoney() {
		return maxInvestMoney;
	}

	public void setMaxInvestMoney(Long maxInvestMoney) {
		this.maxInvestMoney = maxInvestMoney;
	}

	public String getBeforemoneyuse() {
		return beforemoneyuse;
	}

	public void setBeforemoneyuse(String beforemoneyuse) {
		this.beforemoneyuse = beforemoneyuse;
	}

	public String getMinreturn() {
		return minreturn;
	}

	public void setMinreturn(String minreturn) {
		this.minreturn = minreturn;
	}

	public String getInvesttimelimit() {
		return investtimelimit;
	}

	public void setInvesttimelimit(String investtimelimit) {
		this.investtimelimit = investtimelimit;
	}

	public String getRiskyq() {
		return riskyq;
	}

	public void setRiskyq(String riskyq) {
		this.riskyq = riskyq;
	}

	public String getDystufftype() {
		return dystufftype;
	}

	public void setDystufftype(String dystufftype) {
		this.dystufftype = dystufftype;
	}

	public String getDywzkl() {
		return dywzkl;
	}

	public void setDywzkl(String dywzkl) {
		this.dywzkl = dywzkl;
	}

	public String getInvestDesc() {
		return investDesc;
	}

	public void setInvestDesc(String investDesc) {
		this.investDesc = investDesc;
	}

	public String getInvestExample() {
		return investExample;
	}

	public void setInvestExample(String investExample) {
		this.investExample = investExample;
	}

	public ProjectType getProjectType() {
		return projectType;
	}

	public void setProjectType(ProjectType projectType) {
		this.projectType = projectType;
	}

	public String getProjectGoodness() {
		return projectGoodness;
	}

	public void setProjectGoodness(String projectGoodness) {
		this.projectGoodness = projectGoodness;
	}

	public Location getLocation() {
		return location;
	}

	public void setLocation(Location location) {
		this.location = location;
	}

	public BussinessType getBussinessType() {
		return bussinessType;
	}

	public void setBussinessType(BussinessType bussinessType) {
		this.bussinessType = bussinessType;
	}

	public String getUserfor() {
		return userfor;
	}

	public void setUserfor(String userfor) {
		this.userfor = userfor;
	}

	public Long getFinanceMoney() {
		return financeMoney;
	}

	public void setFinanceMoney(Long financeMoney) {
		this.financeMoney = financeMoney;
	}

	public Long getIntentMoney() {
		return intentMoney;
	}

	public void setIntentMoney(Long intentMoney) {
		this.intentMoney = intentMoney;
	}

	public FinanceType getFinanceType() {
		return financeType;
	}

	public void setFinanceType(FinanceType financeType) {
		this.financeType = financeType;
	}

	public String getProvidestuff() {
		return providestuff;
	}

	public void setProvidestuff(String providestuff) {
		this.providestuff = providestuff;
	}

	public String getProjectstage() {
		return projectstage;
	}

	public void setProjectstage(String projectstage) {
		this.projectstage = projectstage;
	}

	public String getMoneysiderage() {
		return moneysiderage;
	}

	public void setMoneysiderage(String moneysiderage) {
		this.moneysiderage = moneysiderage;
	}

	public ExitType getExitType() {
		return exitType;
	}

	public void setExitType(ExitType exitType) {
		this.exitType = exitType;
	}

	public String getShortquicktime() {
		return shortquicktime;
	}

	public void setShortquicktime(String shortquicktime) {
		this.shortquicktime = shortquicktime;
	}

	public String getProjectDesc() {
		return projectDesc;
	}

	public void setProjectDesc(String projectDesc) {
		this.projectDesc = projectDesc;
	}

	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public Long getPublishUserId() {
		return publishUserId;
	}

	public void setPublishUserId(Long publishUserId) {
		this.publishUserId = publishUserId;
	}

}
